import {reqCategotyList,reqSlidesList, reqFloorsList} from '@/api'

//用于响应组件中的“动作”
const actions = {
	// 专门用于获取三级分类数据
	async getCategoryList(miniStore){
		// 发送请求获取三级分类数据
		let result = await reqCategotyList()
		// 代码能走到下面这一行，就证明响应一定是成功的，要进一步判断业务逻辑是否成功
		// 思考：响应要是不成功的怎么办？—— 我们已经axios在拦截器中处理了。
		if(result.code === 200){
			// 若业务逻辑成功，联系对应的mutations操作数据
			miniStore.commit('SAVE_CATEGORY_LIST',result.data)
		}else{
			// 若业务逻辑失败，提示失败的原因
			alert(result.message)
		}
	},
	// 专门用户获取轮播图数据
	async getSlidesList({commit}){
		// 发送请求获取轮播图数据
		let result = await reqSlidesList()
		// 进一步判断业务逻辑是否成功
		if(result.code === 200){
			commit('SAVE_SLIDES_LIST',result.data)
		}else{
			alert(result.message)
		}
	},
	// 获取Floor数据
	async getFloorList({ commit }) {
		let result = await reqFloorsList();
		if (result && result.code === 200) {
			commit('SAVE_FLOOR_LIST', result.data)
		} else {
			alert("获取floor数据失败,请重试")
		}
	}
}

//用于真正操作数据
const mutations = {
	// 存储获取到的分类数据
	SAVE_CATEGORY_LIST(state,list){
		state.categoryList = list
	},
	// 存储获取到的轮播图数据
	SAVE_SLIDES_LIST(state,list){
		state.slidesList = list
	},
	// 存储 floor 数据
	SAVE_FLOOR_LIST(state, floorList) {
		state.floorList = floorList;
	}
}

//初始化的数据
const state = {
	categoryList:[], //首页中的三级分类导航数据
	slidesList:[],
	floorList: [] // 用来存储floor的数据
}

//vuex层面的计算属性
const getters = {}

export default {
	actions,
	mutations,
	state,
	getters
}